package org.niux.aims.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.niux.aims.dao.IApplicationDAO;
import org.niux.aims.models.Application;
import org.niux.aims.service.IApplicationService;
import org.niux.aims.vo.ApplicationVO;
import org.springframework.stereotype.Service;

/**
 * 
 * Copyright (c) 2009,niux<br>
 * All rights reserved.<br>
 * 
 * 文件名称：ApplicationService.java<br>
 * 摘    要：应用数据操作服务类<br>
 * <br>
 * 当前版本：<br>
 * 作    者：铭显 Email: <a href="mailto:liangmingxian@gmail.com">liangmingxian@gmail.com</a><br>
 * 完成日期：@since 2013-8-1<br>
 * <br>
 * 取代版本：<br>
 * 原作者  ：<br>
 * 完成日期：@since Oct 22, 2009<br>
 */
@Service(value="applicationService")
public class ApplicationService implements IApplicationService {
	
	@Resource(name="applicationDao")
	private IApplicationDAO applicationDao;
	
	/**
	 * 
	 * 方法概述：根据ID获取应用数据
	 * 描述：根据ID获取应用数据
	 * @param id
	 * @return
	 * 返回类型：
	 * 修改人：梁铭显
	 * 修改时间：2013-8-1
	 */
	public ApplicationVO findById(Integer id){
		Application app = applicationDao.findById(id);
		
		if(app != null){
			ApplicationVO appVo = new ApplicationVO();
			appVo.setId(app.getId());
			appVo.setAppName(app.getAppName());
			return appVo;
		} else {
			return null;
		}
	}
	
	/**
	 * 
	 * 方法概述：获取所有应用数据
	 * 描述：获取所有应用数据
	 * @return
	 * 返回类型：List<Application>
	 * 修改人：梁铭显
	 * 修改时间：2013-8-1
	 */
	public List<ApplicationVO> findAll(){
		List<Application> apps = applicationDao.findAll();
		List<ApplicationVO> appVos = new ArrayList<ApplicationVO>();
		
		for (Application app : apps) {
			ApplicationVO appVo = new ApplicationVO();
			appVo.setId(app.getId());
			appVo.setAppName(app.getAppName());
			
			appVos.add(appVo);
		}
		return appVos;
	}
	
	/**
	 * 
	 * 方法概述：分页获取应用数据
	 * 描述：分页获取应用数据
	 * @param startPage
	 * @param pageSize
	 * @return
	 * 返回类型：List<Application>
	 * 修改人：梁铭显
	 * 修改时间：2013-8-1
	 */
	public List<ApplicationVO> findByPage(int startPage,int pageSize){
		List<ApplicationVO> appVos = new ArrayList<ApplicationVO>();
		List<Application> apps = applicationDao.findByPage(startPage, pageSize);
		
		for (Application app : apps) {
			ApplicationVO appVo = new ApplicationVO();
			appVo.setId(app.getId());
			appVo.setAppName(app.getAppName());
			appVos.add(appVo);
		}
		
		return appVos;
	}
	
	/**
	 * 
	 * 方法概述：新增应用
	 * 描述：新增应用
	 * @param appVo
	 * 返回类型：void
	 * 修改人：梁铭显
	 * 修改时间：2013-8-2
	 */
	public void add(ApplicationVO appVo){
		Application app = new Application();
		app.setAppName(appVo.getAppName());
		applicationDao.save(app);
	}
	
	/**
	 * 
	 * 方法概述：修改应用
	 * 描述：修改应用
	 * @param appVo
	 * 返回类型：void
	 * 修改人：梁铭显
	 * 修改时间：2013-8-6
	 */
	public void update(ApplicationVO appVo){
		Application app = applicationDao.findById(appVo.getId());
		app.setAppName(appVo.getAppName());
		applicationDao.update(app);
	}
	
	/**
	 * 
	 * 方法概述：删除应用
	 * 描述：删除应用
	 * @param id
	 * 返回类型：void
	 * 修改人：梁铭显
	 * 修改时间：2013-8-6
	 */
	public void del(int id){
		Application app = new Application();
		app.setId(id);
		applicationDao.delete(app);
	}
}
